Сервисы машинного обучения SQL Server 2017 предоставляют возможность использования машинного обучения в SQL Server путем интеграции R и Python. В этой статье мы рассмотрим, как создавать и использовать модели машинного обучения в SQL Server 2017.
Прежде чем мы углубимся в детали, важно понимать, что машинное обучение включает в себя много статистики и исследования данных. Первый шаг в любом анализе машинного обучения – исследование данных и выбор подходящей модели машинного обучения. SQL Server предоставляет различные функции машинного обучения, которые можно использовать для создания прогностических моделей.
Давайте начнем с создания модели машинного обучения в SQL Server 2017. Мы будем использовать R и T-SQL для разработки и хранения модели. Сначала нам нужно создать таблицу для хранения модели. Таблица должна иметь как минимум два поля – имя модели и определение модели. Вот пример того, как создать таблицу:
CREATE TABLE ml_models (
model_name varchar(30) not null default('default model') primary key,
model varbinary(max) not null);
После создания структуры для размещения модели мы можем приступить к созданию модели машинного обучения. В этом примере мы будем использовать модель линейной регрессии, которая используется для изучения взаимосвязи между различными переменными. Предположим, что мы хотим изучить взаимосвязь между градусами Цельсия и градусами Фаренгейта. Вот пример того, как создать модель линейной регрессии:
CREATE PROC linear_model
AS
BEGIN
EXEC sp_execute_external_script
@language = N'R'
, @script = N'
Celsius <- 1:10
Fahrenheit <- ((Celsius * 9) / 5) + 32
DF <- data.frame(Celsius, Fahrenheit)
linearmodel <- rxLinMod(formula = Fahrenheit ~ Celsius, data = DF);
trained_model <- data.frame(payload = as.raw(serialize(linearmodel, connection=NULL)));
'
, @output_data_1_name = N'trained_model'
WITH RESULT SETS ((model varbinary(max)));
END
После создания модели мы можем вставить ее в таблицу ml_models с помощью следующего скрипта:
INSERT INTO ml_models (model)
EXEC linear_model
Теперь, когда у нас есть обученная модель, мы можем протестировать ее, чтобы проверить ее точность. Мы можем передать тестовые значения модели и проверить, правильно ли она предсказывает результат. Вот пример того, как протестировать модель:
DECLARE @CFmodel varbinary(max) = (SELECT model FROM [dbo].[ml_models] WHERE model_name = 'default model');
EXEC sp_execute_external_script
@language = N'R'
, @script = N'
current_model <- unserialize(as.raw(CFmodel));
Celcius <- c(11.5, 50)
testDF <- data.frame(Celcius)
predicted.temp <- rxPredict(current_model, testDF);
OutputDataSet <- cbind(testDF$Celcius, predicted.temp);
'
, @params = N'@CFmodel varbinary(max)'
, @CFmodel = @CFmodel
WITH RESULT SETS ((Celcius FLOAT, Predicted_Farenheit FLOAT))
В этом примере мы извлекаем модель из таблицы ml_models и передаем ее в скрипт R. Затем мы создаем тестовые значения в градусах Цельсия и используем модель для предсказания соответствующих значений в градусах Фаренгейта. Результат предсказания отображается в конечном наборе результатов.
Важно отметить, что этот пример является только демонстрацией того, как разрабатывать, хранить и использовать модели машинного обучения в SQL Server. Фактический процесс анализа данных, выбора модели и улучшения модели намного сложнее и выходит за рамки этой статьи.
Однако процесс создания, хранения, чтения и использования моделей машинного обучения в SQL Server остается одинаковым независимо от сложности модели. Эта статья предоставляет базовое понимание того, как работать с моделями машинного обучения в SQL Server 2017 с использованием T-SQL и R.